package org.seefly.iprint.utils;

import java.net.InetAddress;

import javax.servlet.http.HttpServletRequest;


/**
 * IP工具类
 * @author liujianxin
 * @date 2018/4/23 23:01
 */
public class IPUtils {
    



    /**
     * 该类用来获取客户端的真实IP
     * @author liujianxin
     * @date 2018/4/23 23:00
     * @return $return
     */
    public static String getIP(HttpServletRequest request) {

        String ip = request.getHeader("x-forwarded-for");     
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {     
            ip = request.getHeader("Proxy-Client-IP");     
        }     
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {     
            ip = request.getHeader("WL-Proxy-Client-IP");     
        }     
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {     
            ip = request.getRemoteAddr();     
            if(ip.equals("127.0.0.1")){       
                //根据网卡取本机配置的IP        
                InetAddress inet=null;       
                try {       
                    inet = InetAddress.getLocalHost();       
                } catch (Exception e) {       
                    e.printStackTrace();       
                }       
                ip= inet.getHostAddress();       
            }    
        }     
        // 多个代理的情况，第一个IP为客户端真实IP,多个IP按照','分割    
        if(ip != null && ip.length() > 15){      
            if(ip.indexOf(",")>0){       
                ip = ip.substring(0,ip.indexOf(","));       
            }       
        }       
        return ip;
    }

}
